left = 5  #
right = 7
#有个用例过不了
def rangeBitwiseAnd(left: int, right):

    ans=left
    for i in range(left+1,right+1):
        ans=ans&i
    print(ans)
# rangeBitwiseAnd(left,right)

def rangeBitwiseAnd1(left: int, right):
    #左移30位
    mask=1<<30  #这里是有符号数，所以取31位
    ans=0
    #获取left 和 right的最长公共前缀，这个最长公共前缀便是要求的结果
    while mask>0 and (left&mask)==(right&mask):
        ans|=left&mask
        #将mask右移一位
        mask>>=1
    return ans
print(rangeBitwiseAnd1(left,right))